package xfuzzy.xfghl.output;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Clase que representa el fichero de salida
 * @author Alberto David Fernandez Fernandez
 * */

public class GAOutput {
	
	/**
	 * Ruta del fichero salida por defecto 
	 * */
	private static String filename = "algorithmOutput";
	
	/**
	 * Metodo que escribe una linea de texto
	 * @param output Texto a escribir
	 * @param file Ruta del fichero de salida
	 * */
	
	private static void writeLine(String output, String file)  {
		
		BufferedWriter out = null;
		try {
			out = new BufferedWriter(new FileWriter(file, true));
		    out.write(output + System.getProperty("line.separator"));
		    out.close();
		} 
		catch (IOException e) {
			System.out.println("Error: " + e.getMessage());
			e.printStackTrace();
		}
	}
	
	/**
	 * Metodo que escribe un texto
	 * @param output Texto a escribir
	 * @param file Ruta del fichero de salida
	 * */
	
	private static void writeText(String output, String file)  {
		
		BufferedWriter out = null;
		try {
			out = new BufferedWriter(new FileWriter(file, true));
		    out.write(output);
		    out.close();
		} 
		catch (IOException e) {
			System.out.println("Error: " + e.getMessage());
			e.printStackTrace();
		}
		finally  {
			
		}
	}
	
	/**
	 * Metodo que escribe un texto en el fichero por defecto
	 * @param output Texto a escribir
	 * */

	public static void write(String output)  {
		
		GAOutput.writeText(output, GAOutput.filename);
	}
	
	/**
	 * Metodo que escribe un texto en un fichero
	 * @param output Texto a escribir
	 * @param file Ruta del fichero de salida
	 * */
	
	public static void write(String output, String file)  {
		
		GAOutput.writeText(output, file);
	}
	
	/**
	 * Metodo que escribe una linea de texto en el fichero por defecto
	 * @param output Texto a escribir
	 * */
	
	public static void writeln(String output)  {
		
		GAOutput.writeLine(output, GAOutput.filename);
	}
	
	/**
	 * Metodo que escribe una linea de texto en un fichero
	 * @param output Texto a escribir
	 * @param file Ruta del fichero de salida
	 * */
	
	public static void writeln(String output, String file)  {
		
		GAOutput.writeLine(output, file);
	}
}
